The present invention relates generally to transaction processing systems. More particularly, the present invention relates to removal of resource manager affinity during restart in a transaction processing system.
In most transaction processing systems, both distributed and non-distributed, when a transaction begins and a resource manager becomes involved in a transaction, that resource manager is then bound to the transaction manager and its logical network node. In many cases, the binding is even to the actual physical system. When a transaction, the resource manager, the transaction manager, or the system(s) they are running on fail, all of the failed entries must restart honoring their affinities. These affinities can restrict the ability of a computer system to quickly and easily recover from failures. In addition, these affinities can prevent resource managers from performing peer recovery.
The inability to coordinate a transaction across multiple systems within a multi-system environment places a limitation on resource manager restart processing after a transaction manager failure, such that the resource managers involved in a unit of recovery (or a common set of units of recovery) are required to restart on a single system. This complicates the restart configuration and makes it difficult to balance restart processing across systems within their own multi-system environment. For example, an application running on a multi-system environment may include a function that transfers money from a savings account into a checking account. The unit of recovery in this example would include both the withdrawal from the savings account and the deposit into the checking account. The transaction that withdraws money from the savings account may be performed using a Database 2 (DB2(copyright)) resource manager, and the transaction that deposits money into the checking account may be performed using an Information Management System (IMS) resource manager. If a restart is required, both the DB2(copyright) and IMS resource managers must be restarted on the same system within the multi-system environment. It is this affinity that restricts system restarts after failures by limiting the flexibility of system restarts.
An exemplary embodiment of the present invention is a method for affinity free restart of a resource manager in a multi-system environment. The method begins when a restart request is received from a first resource manager on a first system in the multi-system environment. The first resource manager is associated with an incomplete transaction. Next, a distributed transaction unit of recovery structure is built for the incomplete transaction. Then, the distributed transaction unit of recovery structure is sent to a transaction manager for restart processing. The restart process includes restarting the first resource manager on the first system. The restart process also includes restarting a second resource manager on a second system in the multi-system environment if the incomplete transaction is associated with the second resource manager. The second system is a different system in the multi-system environment than the first system and the second resource manager previously had a node in common with the first resource manager. Additional embodiments include a system and storage medium for affinity free restart of a resource manager in a multi-system environment.